]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shellDBus: Emit a PropertyChanged for OverviewActive
authorColin Walters <walters@verbum.org>
Sat, 13 Jul 2013 18:58:36 +0000 (14:58 -0400)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 13 Nov 2014 18:17:57 +0000 (18:17 +0000)
I was going to add another DBus property to signal when the shell was
done loading and was idle, and while implementing that I noticed we
aren't emitting PropertyChanged for, well, any property.  Let's fix
OverviewActive.

It's unfortunate it's so tedious to correctly implement a DBus
property =/

https://bugzilla.gnome.org/show_bug.cgi?id=704163

js/ui/shellDBus.js

index 4ef03c1496c763f32be418f605b183c9bb8dac7b..45a2054cb187d40252558781756b69c756c34983 100644 (file)
@@ -90,6 +90,12 @@ const GnomeShell = new Lang.Class({
             function(display, action, deviceid, timestamp) {
                 this._emitAcceleratorActivated(action, deviceid, timestamp);
             }));
+
+        this._cachedOverviewVisible = false;
+        Main.overview.connect('showing',
+                              Lang.bind(this, this._checkOverviewVisibleChanged));
+        Main.overview.connect('hidden',
+                              Lang.bind(this, this._checkOverviewVisibleChanged));
     },
 
     /**
@@ -235,8 +241,15 @@ const GnomeShell = new Lang.Class({
 
     Mode: global.session_mode,
 
+    _checkOverviewVisibleChanged: function() {
+        if (Main.overview.visible !== this._cachedOverviewVisible) {
+            this._cachedOverviewVisible = Main.overview.visible;
+            this._dbusImpl.emit_property_changed('OverviewActive', new GLib.Variant('b', this._cachedOverviewVisible));
+        }
+    },
+
     get OverviewActive() {
-        return Main.overview.visible;
+        return this._cachedOverviewVisible;
     },
 
     set OverviewActive(visible) {